草庐IT

c++ - 池化线程的 SetThreadAffinityMask

全部标签

c - getaddrinfo() - Linux 与 Windows

在Linux中,我可以调用getaddrinfo()到本地套接字getaddrinfo(NULL,port,&hints,&servinfo)来创建这样的列表:IPv4:0.0.0.0|socktype:1|protocol:6IPv4:0.0.0.0|socktype:2|protocol:17IPv4:0.0.0.0|socktype:3|protocol:0IPv6:::|socktype:1|protocol:6IPv6:::|socktype:2|protocol:17IPv6:::|socktype:3|protocol:0而在Windows中,任何与本地机器相关的调用"N

c - C for Windows 中的网络摄像头视频程序

我想编写一个应用程序,从连接到PC的网络摄像头捕获视频。我在其他网站上找到了教程,但它们是用C++或C#编写的,我有兴趣使用C来完成。你知道一些网络或有一些知识可以帮助我吗?我想我将不得不开始我的代码“请求许可”到SO以允许我连接到网络摄像头但是......我不知道该怎么做,也不知道如何继续。 最佳答案 我注意到你在Windows上的标记,所以这个c库video4linux不会为你工作。然而,在许多情况下,OpenCV(在C/C++中)会做得很好。OpenCV的很多部分都是纯C语言,其中“视频分析”部分可能适合您的部分需求。找到这个

c++ - MFC GUI 应用程序重写 - 线程、消息传递、文档/ View 等。需要建议

我正在重写一个有很多问题的MFC应用程序。主要问题是不稳定。它是一个GUI应用程序,通过USB与外部模块通信。因此,它通过使用计时器每n毫秒运行一次通信堆栈。然而,系统调用不允许在计时器回调中使用,因此程序不稳定,因此经常崩溃和挂起。所以我必须重写应用程序以在后台线程中运行通信堆栈。这里的另一个问题是数据没有完全与表示分离,如果我使用另一个线程,我必须确保我保护共享资源。所以,主要是通信栈会通知应用程序有新的数据。这应该由工作线程处理。它运行通信堆栈,处理新消息,然后在更新数据结构时锁定数据结构,然后回复模块。然后它向主线程发送一strip有PostMessage的消息以更新GUI。但

c - 从 Windows 内部修改 SMBIOS

Google在这方面让我失望了(或者我没有正确使用Google)。我有一种情况想修改SMBIOS数据的一些关键属性(如硬件制造商或Assets标签)。我从Windows内部知道可以使用WMI提取SMBIOS数据,但如何更改值?这可能吗?如果可能的话,我想以编程方式执行此操作。这可能吗?谢谢! 最佳答案 SMBIOS数据嵌入在BIOSROM镜像中,因此您需要BIOS供应商提供的工具来执行此操作。AMI和Phoenix都提供实用程序来执行此操作,但最终用户通常无法使用它们。它们旨在供制造商用于在生产过程中加载序列号数据。不过,您可以在网

c - CreateSemaphore() API 中的 lmaxcount 参数有什么用?

我正在学习Windows操作系统,并且正在编写标准的消费者生产者问题。我有一个用于资源计数的信号量和一个用于同步的互斥锁。我已经在CreateSemaphore()中传递了最大计数值50,因此它不应允许生产者创建超过50个资源。但是当我运行代码时,它远远不止于此。我是否错误地理解了maxcount参数的使用?我也贴代码。请帮我解决这个问题。#include#includeDWORDWINAPIconsumerThread(LPVOIDargs);DWORDWINAPIproducerThread(LPVOIDargs);intshared;HANDLEhMutex;HANDLEhSem

c++ - 使用 GetProcessTimes 在 Windows 上测量 CPU 时间

我想测量CPU一些功能的时间。我知道如何使用GetProcessTimes,但我在使用某种“重新启动”实现它时遇到了问题:通常,我会这样做:#include"stdafx.h"#include#includedoublecputimer(){FILETIMEcreateTime;FILETIMEexitTime;FILETIMEkernelTime;FILETIMEuserTime;if(GetProcessTimes(GetCurrentProcess(),&createTime,&exitTime,&kernelTime,&userTime)!=-1){SYSTEMTIMEuser

c++ - 如果在 Intel CPU 上关闭 "SpeedStep Technology",RDTSC() 是否准确?

寻找最准确的时间戳。看来CPU周期计数器可以提供:使用unsigned__int64__rdtsc();如果我能够关闭动态CPU速度选项,Intel芯片上的“SpeedStepTechnology”(我假设来自BIOS?):rdtsc()能否准确衡量两个事件之间耗时?事件?CPU时钟速度是多少?真的是广告上说的吗CPU速度(即2.4GHzCPU-使用每秒2,400,000,000分频CPU时钟计数值来获取实际时间)? 最佳答案 Willrdtsc()beanaccuratemeasureofelapsedtimebetweentwo

编译器警告,已修复但想确保我理解

我一直在使用我在网上找到的一些C代码,这些代码在Windows7上有带有代码块的编译器警告,因为我正在学习C并试图在学习过程中理解代码我决定查看警告并修复它们中的一些足够简单,但是我修复的第一个block我想我明白了,但如果有人能证实我的理解,我将不胜感激,有问题的原始代码片段是unsignedcharbuffer[MAX_PATH];unsignedchartext_to_send[MAX_PATH];unsignedchardigits[MAX_PATH];//examplewarningwithdigitswhenusedasbelowtext_to_send[m]=strtol

c - 如何让我的 Win32 程序 'pin to taskbar' ?

我用C编写了一个小的Win32程序,除了一件事之外,它完全按照设计编译和运行......当我运行该程序时,该图标按预期出现在任务栏中。但是,我无法“右键单击”正在运行的图标并选择“将此程序固定到任务栏”——该选项不会出现。我唯一的右键单击选项是关闭程序。如何创建允许“固定到任务栏”选项的win32程序? 最佳答案 我会发表评论,但因为我没有50的声誉-我不得不做出回答。我不认为这是因为您的申请。我刚刚制作了一个简单的Win32C应用程序,固定工作正常。尝试检查此注册表项:[HKEY_CURRENT_USER\Software\Pol

windows - 线程命令在 WInDbg 中不起作用

尝试在WinDbg中执行基于线程的命令。安装程序是具有XP的VMWare,主机是Win7。基于this,试图调试应用程序挂起。但是无法从中获取任何信息。对于简单的tilda(~)它给出了语法错误。我需要做一些不同的设置才能执行这些命令吗?无论如何,这些“特殊”吗?因为我可以使用其他命令。基本上我希望WinDbg让我监控线程的状态?例如等待响应、发送请求或类似的事情。 最佳答案 ~仅为用户模式调试更改线程上下文。对于krnelmkode调试,请参阅帮助:。线。过程!线!过程 关于windo